package nav

/*
#include<stdint.h>
#include<stdbool.h>
extern void nav_duDebugDrawCompactHeightfieldDistance(void * dd,void * chf);
extern void nav_duDebugDrawCompactHeightfieldRegions(void * dd,void * chf);
extern void nav_duDebugDrawCompactHeightfieldSolid(void * dd,void * chf);
extern void nav_duDebugDrawContours(void * dd,void * cset,float alpha);
extern void nav_duDebugDrawHeightfieldLayer(void * dd,void * layer,int idx);
extern void nav_duDebugDrawHeightfieldLayers(void * dd,void * lset);
extern void nav_duDebugDrawHeightfieldSolid(void * dd,void * hf);
extern void nav_duDebugDrawHeightfieldWalkable(void * dd,void * hf);
extern void nav_duDebugDrawPolyMesh(void * dd,void * mesh);
extern void nav_duDebugDrawPolyMeshDetail(void * dd,void * dmesh);
extern void nav_duDebugDrawRawContours(void * dd,void * cset,float alpha);
extern void nav_duDebugDrawRegionConnections(void * dd,void * cset,float alpha);
extern void nav_duDebugDrawTriMesh(void * dd,void * verts,int nverts,void * tris,void * normals,int ntris,void * flags,float texScale);
extern void nav_duDebugDrawTriMeshSlope(void * dd,void * verts,int nverts,void * tris,void * normals,int ntris,float walkableSlopeAngle,float texScale);

*/
import "C"
import "unsafe"
import "gitee.com/hasika/cgo"

var _ unsafe.Pointer
var _ cgo.NotUsed

/*
void duDebugDrawCompactHeightfieldDistance(duDebugDraw * dd, rcCompactHeightfield const& chf)
*/
func DuDebugDrawCompactHeightfieldDistance(dd DuDebugDrawPtr, chf RcCompactHeightfieldPtr) {
	var wrap_arg_dd unsafe.Pointer
	var wrap_arg_chf unsafe.Pointer
	wrap_arg_dd = (unsafe.Pointer)(dd)
	wrap_arg_chf = (unsafe.Pointer)(chf)
	C.nav_duDebugDrawCompactHeightfieldDistance(wrap_arg_dd, wrap_arg_chf)
}

/*
void duDebugDrawCompactHeightfieldRegions(duDebugDraw * dd, rcCompactHeightfield const& chf)
*/
func DuDebugDrawCompactHeightfieldRegions(dd DuDebugDrawPtr, chf RcCompactHeightfieldPtr) {
	var wrap_arg_dd unsafe.Pointer
	var wrap_arg_chf unsafe.Pointer
	wrap_arg_dd = (unsafe.Pointer)(dd)
	wrap_arg_chf = (unsafe.Pointer)(chf)
	C.nav_duDebugDrawCompactHeightfieldRegions(wrap_arg_dd, wrap_arg_chf)
}

/*
void duDebugDrawCompactHeightfieldSolid(duDebugDraw * dd, rcCompactHeightfield const& chf)
*/
func DuDebugDrawCompactHeightfieldSolid(dd DuDebugDrawPtr, chf RcCompactHeightfieldPtr) {
	var wrap_arg_dd unsafe.Pointer
	var wrap_arg_chf unsafe.Pointer
	wrap_arg_dd = (unsafe.Pointer)(dd)
	wrap_arg_chf = (unsafe.Pointer)(chf)
	C.nav_duDebugDrawCompactHeightfieldSolid(wrap_arg_dd, wrap_arg_chf)
}

/*
void duDebugDrawContours(duDebugDraw * dd, rcContourSet const& cset, float const alpha=1)
*/
func DuDebugDrawContours(dd DuDebugDrawPtr, cset RcContourSetPtr, alpha float32) {
	var wrap_arg_dd unsafe.Pointer
	var wrap_arg_cset unsafe.Pointer
	var wrap_arg_alpha C.float
	wrap_arg_dd = (unsafe.Pointer)(dd)
	wrap_arg_cset = (unsafe.Pointer)(cset)
	wrap_arg_alpha = (C.float)(alpha)
	C.nav_duDebugDrawContours(wrap_arg_dd, wrap_arg_cset, wrap_arg_alpha)
}

/*
void duDebugDrawHeightfieldLayer(duDebugDraw * dd, rcHeightfieldLayer const& layer, int const idx)
*/
func DuDebugDrawHeightfieldLayer(dd DuDebugDrawPtr, layer RcHeightfieldLayerPtr, idx int32) {
	var wrap_arg_dd unsafe.Pointer
	var wrap_arg_layer unsafe.Pointer
	var wrap_arg_idx C.int
	wrap_arg_dd = (unsafe.Pointer)(dd)
	wrap_arg_layer = (unsafe.Pointer)(layer)
	wrap_arg_idx = (C.int)(idx)
	C.nav_duDebugDrawHeightfieldLayer(wrap_arg_dd, wrap_arg_layer, wrap_arg_idx)
}

/*
void duDebugDrawHeightfieldLayers(duDebugDraw * dd, rcHeightfieldLayerSet const& lset)
*/
func DuDebugDrawHeightfieldLayers(dd DuDebugDrawPtr, lset RcHeightfieldLayerSetPtr) {
	var wrap_arg_dd unsafe.Pointer
	var wrap_arg_lset unsafe.Pointer
	wrap_arg_dd = (unsafe.Pointer)(dd)
	wrap_arg_lset = (unsafe.Pointer)(lset)
	C.nav_duDebugDrawHeightfieldLayers(wrap_arg_dd, wrap_arg_lset)
}

/*
void duDebugDrawHeightfieldSolid(duDebugDraw * dd, rcHeightfield const& hf)
*/
func DuDebugDrawHeightfieldSolid(dd DuDebugDrawPtr, hf RcHeightfieldPtr) {
	var wrap_arg_dd unsafe.Pointer
	var wrap_arg_hf unsafe.Pointer
	wrap_arg_dd = (unsafe.Pointer)(dd)
	wrap_arg_hf = (unsafe.Pointer)(hf)
	C.nav_duDebugDrawHeightfieldSolid(wrap_arg_dd, wrap_arg_hf)
}

/*
void duDebugDrawHeightfieldWalkable(duDebugDraw * dd, rcHeightfield const& hf)
*/
func DuDebugDrawHeightfieldWalkable(dd DuDebugDrawPtr, hf RcHeightfieldPtr) {
	var wrap_arg_dd unsafe.Pointer
	var wrap_arg_hf unsafe.Pointer
	wrap_arg_dd = (unsafe.Pointer)(dd)
	wrap_arg_hf = (unsafe.Pointer)(hf)
	C.nav_duDebugDrawHeightfieldWalkable(wrap_arg_dd, wrap_arg_hf)
}

/*
void duDebugDrawPolyMesh(duDebugDraw * dd, rcPolyMesh const& mesh)
*/
func DuDebugDrawPolyMesh(dd DuDebugDrawPtr, mesh RcPolyMeshPtr) {
	var wrap_arg_dd unsafe.Pointer
	var wrap_arg_mesh unsafe.Pointer
	wrap_arg_dd = (unsafe.Pointer)(dd)
	wrap_arg_mesh = (unsafe.Pointer)(mesh)
	C.nav_duDebugDrawPolyMesh(wrap_arg_dd, wrap_arg_mesh)
}

/*
void duDebugDrawPolyMeshDetail(duDebugDraw * dd, rcPolyMeshDetail const& dmesh)
*/
func DuDebugDrawPolyMeshDetail(dd DuDebugDrawPtr, dmesh RcPolyMeshDetailPtr) {
	var wrap_arg_dd unsafe.Pointer
	var wrap_arg_dmesh unsafe.Pointer
	wrap_arg_dd = (unsafe.Pointer)(dd)
	wrap_arg_dmesh = (unsafe.Pointer)(dmesh)
	C.nav_duDebugDrawPolyMeshDetail(wrap_arg_dd, wrap_arg_dmesh)
}

/*
void duDebugDrawRawContours(duDebugDraw * dd, rcContourSet const& cset, float const alpha=1)
*/
func DuDebugDrawRawContours(dd DuDebugDrawPtr, cset RcContourSetPtr, alpha float32) {
	var wrap_arg_dd unsafe.Pointer
	var wrap_arg_cset unsafe.Pointer
	var wrap_arg_alpha C.float
	wrap_arg_dd = (unsafe.Pointer)(dd)
	wrap_arg_cset = (unsafe.Pointer)(cset)
	wrap_arg_alpha = (C.float)(alpha)
	C.nav_duDebugDrawRawContours(wrap_arg_dd, wrap_arg_cset, wrap_arg_alpha)
}

/*
void duDebugDrawRegionConnections(duDebugDraw * dd, rcContourSet const& cset, float const alpha=1)
*/
func DuDebugDrawRegionConnections(dd DuDebugDrawPtr, cset RcContourSetPtr, alpha float32) {
	var wrap_arg_dd unsafe.Pointer
	var wrap_arg_cset unsafe.Pointer
	var wrap_arg_alpha C.float
	wrap_arg_dd = (unsafe.Pointer)(dd)
	wrap_arg_cset = (unsafe.Pointer)(cset)
	wrap_arg_alpha = (C.float)(alpha)
	C.nav_duDebugDrawRegionConnections(wrap_arg_dd, wrap_arg_cset, wrap_arg_alpha)
}

/*
void duDebugDrawTriMesh(duDebugDraw * dd, float const * verts, int nverts, int const * tris, float const * normals, int ntris, unsigned char const * flags, float const texScale)
*/
func DuDebugDrawTriMesh(dd DuDebugDrawPtr, verts *float32, nverts int32, tris *int32, normals *float32, ntris int32, flags *uint8, texScale float32) {
	var wrap_arg_dd unsafe.Pointer
	var wrap_arg_verts unsafe.Pointer
	var wrap_arg_nverts C.int
	var wrap_arg_tris unsafe.Pointer
	var wrap_arg_normals unsafe.Pointer
	var wrap_arg_ntris C.int
	var wrap_arg_flags unsafe.Pointer
	var wrap_arg_texScale C.float
	wrap_arg_dd = (unsafe.Pointer)(dd)
	wrap_arg_verts = (unsafe.Pointer)(verts)
	wrap_arg_nverts = (C.int)(nverts)
	wrap_arg_tris = (unsafe.Pointer)(tris)
	wrap_arg_normals = (unsafe.Pointer)(normals)
	wrap_arg_ntris = (C.int)(ntris)
	wrap_arg_flags = (unsafe.Pointer)(flags)
	wrap_arg_texScale = (C.float)(texScale)
	C.nav_duDebugDrawTriMesh(wrap_arg_dd, wrap_arg_verts, wrap_arg_nverts, wrap_arg_tris, wrap_arg_normals, wrap_arg_ntris, wrap_arg_flags, wrap_arg_texScale)
}

/*
void duDebugDrawTriMeshSlope(duDebugDraw * dd, float const * verts, int nverts, int const * tris, float const * normals, int ntris, float const walkableSlopeAngle, float const texScale)
*/
func DuDebugDrawTriMeshSlope(dd DuDebugDrawPtr, verts *float32, nverts int32, tris *int32, normals *float32, ntris int32, walkableSlopeAngle float32, texScale float32) {
	var wrap_arg_dd unsafe.Pointer
	var wrap_arg_verts unsafe.Pointer
	var wrap_arg_nverts C.int
	var wrap_arg_tris unsafe.Pointer
	var wrap_arg_normals unsafe.Pointer
	var wrap_arg_ntris C.int
	var wrap_arg_walkableSlopeAngle C.float
	var wrap_arg_texScale C.float
	wrap_arg_dd = (unsafe.Pointer)(dd)
	wrap_arg_verts = (unsafe.Pointer)(verts)
	wrap_arg_nverts = (C.int)(nverts)
	wrap_arg_tris = (unsafe.Pointer)(tris)
	wrap_arg_normals = (unsafe.Pointer)(normals)
	wrap_arg_ntris = (C.int)(ntris)
	wrap_arg_walkableSlopeAngle = (C.float)(walkableSlopeAngle)
	wrap_arg_texScale = (C.float)(texScale)
	C.nav_duDebugDrawTriMeshSlope(wrap_arg_dd, wrap_arg_verts, wrap_arg_nverts, wrap_arg_tris, wrap_arg_normals, wrap_arg_ntris, wrap_arg_walkableSlopeAngle, wrap_arg_texScale)
}
